Widespread acceptance of the Internet and proliferation of online transactions and electronic commerce (“e-commerce”) has placed increasingly greater importance on information technology (IT) services and their underlying infrastructure. Businesses rely on these IT services everyday to conduct an ever expanding array of transactions with their customers, including banking transactions, credit card transactions, investment transactions, and the like. It is therefore imperative for these businesses to maintain their IT services performing at peak throughput levels and efficiency in order to process as many transactions as possible. The process of maintaining of an IT service performing at peak throughput levels is referred to herein as performance tuning.
An IT service for a typical transaction, such as a bank deposit, may involve several pieces of a IT equipment or nodes. For example, there may be a Web server for receiving a request from a customer over the Internet, an application server for providing a bank deposit application to the Web server, a backend server for processing the bank deposit, and a database for storing and updating the customer's records. Each one of these servers individually may affect the speed with which the entire transaction is conducted and, hence, the throughput of the IT service and response time for the customer. Similarly, each server may contain numerous components that may affect the efficiency of the server.
Traditionally, performance tuning of IT services involved analyzing the individual nodes of the IT service. This may include, for example, checking the speed of the processors at each node, the type and amount of memory, the size of the hard drives, and the like. Other factors possibly affecting the performance of an individual node may include, for example, whether parallel processing may or may not be occurring, any memory and/or disk drive thrashing, and the like. With such an array of variables, performance tuning of IT services tended to be a tedious and time consuming process. IT service personnel were often relegated to changing one variable at a time and observing the impact of the change on the node. As a result, traditional performance tuning of IT services was largely an iterative process that relied heavily on the use of trial and error.
Accordingly, what is needed is a more efficient way to tune the performance of an IT service. More specifically, what is needed is a way to model the performance of an IT service and to predict the impact a change may have on the performance using the model.